package com.xlh.service;

import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * @author zhr 2019/3/1
 */
public interface ExcelService {
    /**
     * 下载excel模板
     *
     * @param fileName 文件名
     * @param fileDir  文件存放路径
     * @throws IOException
     */
    void downloadExcelModel(HttpServletResponse res, HttpServletRequest req, String fileName, String fileDir) throws IOException;

    /**
     * 下载数据
     * @param res
     * @param fileName
     * @param data
     * @param rowNum
     * @throws IOException
     */
    void downloadExcelData(HttpServletResponse res, HttpServletRequest req,
                           String fileName, String fileDir , List<List<String>> data , int rowNum) throws IOException;



    /**
     * 下载数据Override
     * @param res
     * @param fileName
     * @param data
     * @param rowNum
     * @throws IOException
     */
    void downloadExcelData(HttpServletResponse res, String fileName, List<List<String>> data , int rowNum) throws IOException;

    /**
     * 下载excel模板
     *
     * @param res
     * @param fileName 文件名
     * @param fileDir  文件存放路径
     * @param row      写入的行数
     * @param rowData  每行数据
     */
    void downloadExcelModel(HttpServletResponse res, String fileName, String fileDir,
                            int row, List<List<String>> rowData);

    /**
     * @param file       web文件
     * @param clazz      泛型类
     * @param startLine  起始解析行，从1开始计算
     * @param sheetIndex sheet页，从1开始计算
     * @return 解析excel文件为指定泛型List
     */
    <T> List<T> parseFile(MultipartFile file, Class<T> clazz, int startLine, int sheetIndex);
}
